/**
 * 封装 uni.showModal
 * @param {Object} options - 配置项
 * @param {String} options.title - 标题（默认：'提示'）
 * @param {String} options.content - 内容（必填）
 * @param {String} options.confirmText - 确认按钮文本（默认：'确认'）
 * @param {String} options.cancelText - 取消按钮文本（默认：'取消'）
 * @param {Boolean} options.showCancel - 是否显示取消按钮（默认：true）
 * @param {String} options.confirmColor - 确认按钮颜色（默认：'#07C160'，小程序绿色主题）
 * @param {String} options.cancelColor - 取消按钮颜色（默认：'#999999'）
 * @returns {Promise} - 点击确认返回 resolve(true)，取消/关闭返回 reject(false)
 */
export const showModal = (options = {}) => {
  // 默认配置
  const defaultOptions = {
    title: '提示',
    content: '',
    confirmText: '确认',
    cancelText: '取消',
    showCancel: true,
    confirmColor: '#07C160', // 微信小程序推荐主色
    cancelColor: '#999999'
  };

  // 合并配置（用户配置覆盖默认配置）
  const config = { ...defaultOptions, ...options };

  // 校验必填项
  if (!config.content) {
    console.error('showModal 缺少必填 content');
    return Promise;
  }

  return new Promise((resolve, reject) => {
    uni.showModal({
      ...config,
      success: (res) => {
        if (res.confirm) {
          // 用户点击确认
          resolve(true);
        } else if (res.cancel) {
          // 用户点击取消
          reject(false);
        }
      },
      fail: (err) => {
        // 调用失败（如权限问题）
        console.error('showModal 调用失败：', err);
        reject(false);
      },
      complete: () => {
        // 弹窗关闭后的回调（可选）
        if (config.complete && typeof config.complete === 'function') {
          config.complete();
        }
      }
    });
  });
};

// 快捷方法：仅显示确认按钮的提示框（无取消按钮）
export const alert = (options = {}) => {
  return showModal({ ...options, showCancel: false });
};